/** new, preferred syntax **/

// properties are directly passed to `create` method
var Person = Class.create({
    initialize: function (name, lname) {
        this.name = name;
        this.lname = lname;
    },
    say: function (message) {
        return this.name + ': 123123123' + message;
    }
});

// when subclassing, specify the class you want to inherit from
var Pirate = Class.create(Person, {
    initialize: function myfunction($super, name, lname, grade) {
        $super(name, lname);
        this.grade = grade;
    },
    // redefine the speak method
    say: function ($super, message) {
        return $super(message) + ', yarr123123!';
    }
});

var john = new Pirate('Long', 'John', 123);
console.log(john.say('ahoy matey'));
console.log(john.name);
console.log(john.lname);
console.log(john.grade);
// -> "Long John: ahoy matey, yarr!"